package ch8;

import java.io.File;
import java.io.FileInputStream;

import java.io.OutputStream;
import java.net.Socket;

public class FileSender extends Thread {
	private Socket s;

	public FileSender(Socket s) {
		this.s = s;
	}

	// public static final String fileName =
	// "E:\\BaiduNetdiskDownload\\job-salary.png";
	public static final String fileName = "D:/我的文档/My Pictures/dog.gif";

	// Map<String文件名，byte[]:文件内容)
	@Override
	public void run() {
		System.out.println("图片准备发送给" + s + "...");
		// 把我E盘的文件读取出来，通过网络流发给你
		try {
			File f = new File(fileName);
			String name = f.getName();

			try (FileInputStream fin = new FileInputStream(f);) {
				byte[] b = new byte[fin.available()];
				int len = fin.read(b);
				// fin.close();
				OutputStream out = s.getOutputStream();
				// 1:发一个字节，告诉你文件名的长度，不会超过255
				byte[] na = name.getBytes();
				out.write(na.length);
				// 2:发文件名
				out.write(na);
				// 3:发文件内容
				out.write(b, 0, len);
				out.flush();
				System.out.println("图片发送给" + s + "成功");
			}
		} catch (Exception e) {
			// TODO 自动生成的 catch 块
			e.printStackTrace();
		} finally {
			close();
		}
	}

	public void close() {
		if (s != null)
			try {
				s.close();
			} catch (Exception e) {
				// TODO 自动生成的 catch 块
				e.printStackTrace();
			}
	}
}
